# Step 1: 备份当前执行策略（增加空值保护）
$originalPolicy = Get-ExecutionPolicy -Scope Process -ErrorAction SilentlyContinue
if (-not $originalPolicy) {
    $originalPolicy = 'Restricted' # 默认安全策略
    Write-Host "检测到空执行策略，已默认设置为 Restricted" -ForegroundColor Yellow
}

# Step 2: 临时设为无限制模式（仅当前进程）
try {
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force | Out-Null
    
    # =========== 新增编码配置 ===========
    # 强制启用 UTF-8 编码体系
    [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
    [Console]::InputEncoding  = [Text.UTF8Encoding]::new($false)
    $OutputEncoding          = [Text.UTF8Encoding]::new($false)
    $PSStyle.FormattingPath   = "C:\Windows\System32\zh-CN\chcp1252.cp" # 根据系统实际路径调整
    # =================================

    # TODO: 在这里插入你需要执行的核心代码或 .ps1 调用
    # & '.\exec.ps1'
    $ErrorActionPreference = 'SilentlyContinue'
    
    # 设置窗口标题和工作目录
    $host.ui.RawUI.WindowTitle = "IoT数据导出工具"
    Set-Location -Path $PSScriptRoot
    
    # Java 路径配置
    $javaHome = Join-Path $PSScriptRoot "jdk_11"
    $javaPath = Join-Path $javaHome "bin\java"
    $javaPath
    # Java 启动参数（新增 UTF-8 相关参数）
    $javaArgs = @(
        '-Djava.net.preferIPv4Stack=true',
        '-Dfile.encoding=UTF-8',
        '-Dsun.stdout.encoding=UTF-8',
        '-Dsun.stderr.encoding=UTF-8',
        '-jar',
        'iot_download_tool-jar-with-dependencies.jar'
    )
    
    # 执行 Java 程序
    & $javaPath @javaArgs
    
    Write-Host "`n按任意键退出..." -ForegroundColor Cyan
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    
} catch {
    Write-Warning "执行过程中发生错误: $_"
} finally {
    # Step 3: 强制恢复原始策略（增强版）
    try {
        Set-ExecutionPolicy -ExecutionPolicy $originalPolicy -Scope Process -Force -Confirm:$false | Out-Null
        Write-Host "已恢复原始执行策略: $originalPolicy" -ForegroundColor Green
    } catch {
        Write-Error "恢复执行策略失败: $_"
    }
}